/**
 * Trabajo de Ingeniería de Software 2
 * Año 2008
 * Sistema de Reserva de Recursos.
 * Desarrolladores: - Marcelo Ferreira.
 *                  - Christian Gómez.
 *                  - Marcelo Rodas.
 */
package modelo;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Clase Entidad Tiporecurso (JPA)
 * @author jmferreira
 */
@Entity
@Table(name = "tiporecurso")
@NamedQueries({@NamedQuery(name = "Tiporecurso.findByIdTipoRecurso", query = "SELECT t FROM Tiporecurso t WHERE t.idTipoRecurso = :idTipoRecurso"), @NamedQuery(name = "Tiporecurso.findByDescripcionTipoRecurso", query = "SELECT t FROM Tiporecurso t WHERE t.descripcionTipoRecurso = :descripcionTipoRecurso"), @NamedQuery(name = "Tiporecurso.findByMovible", query = "SELECT t FROM Tiporecurso t WHERE t.movible = :movible")})
public class Tiporecurso implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "idTipoRecurso", nullable = false)
    private Integer idTipoRecurso;
    @Column(name = "descripcionTipoRecurso", nullable = false)
    private String descripcionTipoRecurso;
    @Column(name = "movible", nullable = false)
    private boolean movible;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTipoRecurso")
    private Collection<Solicitudreserva> solicitudreservaCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTipoRecurso")
    private Collection<Recurso> recursoCollection;

    /**
     * Crea una nueva instancia de Tiporecurso 
     */
    public Tiporecurso() {
    }

    /**
     * Crea una nueva instancia de Tiporecurso con valores especificos
     * @param idTipoRecurso El idTipoRecurso de la Tiporecurso
     */
    public Tiporecurso(Integer idTipoRecurso) {
        this.idTipoRecurso = idTipoRecurso;
    }

    /**
     * Crea una nueva instancia de Tiporecurso con valores especificos
     * @param idTipoRecurso El idTipoRecurso de Tiporecurso
     * @param descripcionTipoRecurso La descripcionTipoRecurso de Tiporecurso
     * @param movible El movible de Tiporecurso
     */
    public Tiporecurso(Integer idTipoRecurso, String descripcionTipoRecurso, boolean movible) {
        this.idTipoRecurso = idTipoRecurso;
        this.descripcionTipoRecurso = descripcionTipoRecurso;
        this.movible = movible;
    }

    /**
     * Obtiene el idTipoRecurso de Tiporecurso
     * @return El idTipoRecurso de Tiporecurso
     */
    public Integer getIdTipoRecurso() {
        return idTipoRecurso;
    }

    /**
     * Fija el idTipoRecurso de Tiporecurso al valor especificado
     * @param idTipoRecurso El idTipoRecurso de Tiporecurso
     */
    public void setIdTipoRecurso(Integer idTipoRecurso) {
        this.idTipoRecurso = idTipoRecurso;
    }

    /**
     * Obtiene la descripcionTipoRecurso de Tiporecurso
     * @return La descripcionTipoRecurso de Tiporecurso
     */
    public String getDescripcionTipoRecurso() {
        return descripcionTipoRecurso;
    }

    /**
     * Fija la descripcionTipoRecurso de Tiporecurso
     * @param descripcionTipoRecurso La descripcionTipoRecurso de Tiporecurso
     */
    public void setDescripcionTipoRecurso(String descripcionTipoRecurso) {
        this.descripcionTipoRecurso = descripcionTipoRecurso;
    }

    /**
     * Obtiene el valor movible de Tiporecurso
     * @return El valor movible de Tiporecurso <code>true</code> si es movible y <code>false</code> si no lo es.
     */
    public boolean getMovible() {
        return movible;
    }

    /**
     * Fija el valor movible de Tiporecurso
     * @param movible El valor movible de Tiporecurso <code>true</code> si es movible y <code>false</code> si no lo es.
     */
    public void setMovible(boolean movible) {
        this.movible = movible;
    }

    /**
     * Obtiene una solicitudreservaCollection de Tiporecurso
     * @return La solicitudreservaCollection de Tiporecurso
     */
    public Collection<Solicitudreserva> getSolicitudreservaCollection() {
        return solicitudreservaCollection;
    }

    /**
     * Fija una solicitudreservaCollection de Tiporecurso al valor especificado
     * @param solicitudreservaCollection La solicitudreservaCollection de Tiporecurso
     */
    public void setSolicitudreservaCollection(Collection<Solicitudreserva> solicitudreservaCollection) {
        this.solicitudreservaCollection = solicitudreservaCollection;
    }

    /**
     * Obtiene un recursoCollection de Tiporecurso
     * @return El recursoCollection de Tiporecurso
     */
    public Collection<Recurso> getRecursoCollection() {
        return recursoCollection;
    }

    /**
     * Fija un recursoCollection de Tiporecurso
     * @param recursoCollection El recursoCollection de Tiporecurso
     */
    public void setRecursoCollection(Collection<Recurso> recursoCollection) {
        this.recursoCollection = recursoCollection;
    }

    /**
     * Retorna un valor de Hash para el objeto.
     * Esta implementacion evalua un valor hash basado sobre los campos id en este objeto
     * @return Un valor de hash para este objeto
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idTipoRecurso != null ? idTipoRecurso.hashCode() : 0);
        return hash;
    }

    /**
     * Determina si otro objeto es igual a Tiporecurso. El resultado es
     * <code>true</code> si y solo si el argumento no es nulo y es un objeto Tiporecurso
     * que tiene el mismo valor del campo id en este objeto.
     * @param object La referencia objeto con el cual comparar
     * @return <code>true</code> Si este objeto es la misma que su argumento;
     * <code>false</code> si no lo es.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Tiporecurso)) {
            return false;
        }
        Tiporecurso other = (Tiporecurso) object;
        if ((this.idTipoRecurso == null && other.idTipoRecurso != null) || (this.idTipoRecurso != null && !this.idTipoRecurso.equals(other.idTipoRecurso))) {
            return false;
        }
        return true;
    }

    /**
     * Retorna una representacion String de este objeto.  Esta implementacion This implementation construye
     * la representacion basada en los campos id.
     * @return Una representacion String del objeto.
     */
    @Override
    public String toString() {
        return idTipoRecurso + "(" + this.getDescripcionTipoRecurso() + ")";
    }
}
